<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Model_Usuario extends CI_Model {

	function __construct() {
		parent::__construct();
    }

    function all($arg = null) {
        $this->db->select('usuario.* , perfil.name as perfil_name, persona.id as persona_id, persona.name, persona.apellido, sede.name as sede_name');
        $this->db->from('usuario');
        $this->db->join('perfil', 'usuario.perfil_id = perfil.id', 'left');
        $this->db->join('persona', 'usuario.persona_id = persona.id', 'left');        
        $this->db->join('sede', 'usuario.sede_id = sede.id', 'left');        
		
        if (isset($arg)){
        	$this->db->where($arg);
        }        

        $query = $this->db->get();
        return $query->result();
    }

    function allFiltered($field, $value, $arg = null) {
        $this->db->select('usuario.* , perfil.name as perfil_name, persona.id as persona_id, persona.name, persona.apellido, sede.name as sede_name');
        $this->db->from('usuario');
        $this->db->join('perfil', 'usuario.perfil_id = perfil.id', 'left');
        $this->db->join('persona', 'usuario.persona_id = persona.id', 'left');   
        $this->db->join('sede', 'usuario.sede_id = sede.id', 'left');
        $this->db->like($field, $value);

        if (isset($arg)){
        	$this->db->where($arg);
        }
                
        $query = $this->db->get();
        return $query->result();
    } 

    function find($id) {
    	$this->db->where('id', $id);
		return $this->db->get('usuario')->row();
    }

    function insert($registro) {
    	$this->db->set($registro);
		$this->db->insert('usuario');
    }

    function update($registro) {
    	$this->db->set($registro);
		$this->db->where('id', $registro['id']);
		$this->db->update('usuario');
    }

    function delete($id) {
    	$this->db->where('id', $id);
		$this->db->delete('usuario');
    }

    function get_login($user, $pass) {
        $this->db->where('login', $user);
        $this->db->where('password', $pass);
        return $this->db->get('usuario');
    }

    function get_perfiles($arg = null) {
        $lista = array();
        $this->load->model('Model_Perfil');

        if (isset($arg)){
        	$this->db->where($arg);
        }
        
        $registros = $this->Model_Perfil->all($arg);
        foreach ($registros as $registro) {
            $lista[$registro->id] = $registro->name;
        }
        return $lista;
    }

    function get_personas($arg = null) {
    	$lista = array();
    	$this->load->model('Model_Persona');
    
    	if (isset($arg)){
    		$this->db->where($arg);
    	}
    
    	$registros = $this->Model_Persona->all($arg);
    	foreach ($registros as $registro) {
    		$lista[$registro->id] = $registro->name.' '. $registro->apellido;
    	}
    	return $lista;
    }

    function get_sedes($arg = null) {
    	$lista = array();
    	$this->load->model('Model_Sede');
    
    	if (isset($arg)){
    		$this->db->where($arg);
    	}
    
    	$registros = $this->Model_Sede->all($arg);
    	foreach ($registros as $registro) {
    		$lista[$registro->id] = $registro->name;
    	}
    	return $lista;
    }    
    
	/*
	 * metodos exclusivos para los operadores
	 * 
	 * */
        /*
    function allOperators() {
    	$this->db->select('usuario.* , perfil.name as perfil_name');
    	$this->db->from('usuario');
    	$this->db->join('perfil', 'usuario.perfil_id = perfil.id', 'left');
    	$this->db->where('perfil.id', '2');
    
    	$query = $this->db->get();
    	return $query->result();
    }   

    function allFilteredOperator($field, $value) {
    	$this->db->select('usuario.* , perfil.name as perfil_name');
    	$this->db->from('usuario');
    	$this->db->join('perfil', 'usuario.perfil_id = perfil.id', 'left');
    	$this->db->where('perfil.id', '2');    	
    	$this->db->like($field, $value);
    
    	$query = $this->db->get();
    	return $query->result();
    }    
*/
}
